/*********************************************************************************
 *      Copyright:  (C) 2020 makun<1394987689@qq.com>
 *                  All rights reserved.
 *
 *       Filename:  no_tail_lnode.c
 *    Description:  This file 
 *                 
 *        Version:  1.0.0(2020年03月23日)
 *         Author:  makun <1394987689@qq.com>
 *      ChangeLog:  1, Release initial version on "2020年03月23日 02时30分42秒"
 *                 
 ********************************************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct lnode
{
    int  data;
    struct  lnode *next;
}lnode;



int main (int argc, char **argv)
{
    lnode       *hand=NULL;//定义一个头指针
    lnode       *new_lnode;//定义一个新节点的指针，用来指向malloc分配的地址
    int i;
    lnode       *tail;//定义一个新的指针，始终指向终端节点
    for(i=0; i<10; i++)//循环申请10个节点来存放数字1~10
    {
        new_lnode = (lnode *)malloc(sizeof(lnode));//new_lnode指向新申请的节点
        memset(new_lnode, 0, sizeof(lnode));//对新申请的节点进行内存清
        new_lnode->next=NULL;//将节点的next域清0，这句可以省略
        new_lnode->data=i+1;//对节点data域赋值
        if( hand == NULL)//判断头指针是否为空，如果为空，链表为空，如果不为空，让hand指向第新申请的节点
        {
            hand=new_lnode;
        }
        else//如果头指针不为空，就让tail指向新申请的节点
        {

            tail->next = new_lnode;//新申请的tail指针，始终指向终端节点
        }
            tail = new_lnode;//tail始终为终端节点。

    }
    lnode  *search=NULL;//定义一个新的指针，来遍历链表
    for(search=hand;search!=NULL;search=search->next)
    {
        printf("printf lnode %d\n", search->data);
    }

    return 0;

} 


